News All Tests
Current file: /home/estudydev/workspace/MSP09/web/news/tests/class.userteammanagement.inc.php
Legend: executed not executed dead code

  Coverage
  Classes Methods Lines
Total
100.00 %100.00%
100.00% 1 / 1
0.00 %0.00%
0.00% 0 / 9
2.17 %2.17%
2.17% 4 / 184
 
UserTeamManagement
100.00 %100.00%
100.00% 1 / 1
0.00 %0.00%
0.00% 0 / 9
0.55 %0.55%
0.55% 1 / 181
 public function UserTeamManagement($courseID)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 9
 public function getTeamOfUser($userID)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 8
 public function getUsersOfTeam($teamID)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 9
 public function listTeams()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 59
 public function showUserTeamForm()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 34
 public function setTeamForUser($userID, $teamID)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 22
 public function showTeamAssignmentForms()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 11
 public function assignUsersToTeam($teamID, $users)
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 27
 public function getUserIDs()
0.00 %0.00%
0.00% 0 / 1
0.00 %0.00%
0.00% 0 / 1


       1                 : <?php                                                                                                                                                                                                                                                                                                                       
       2                 : /*--------------------------------------------------------------------------+                                                                                                                                                                                                                                               
       3                 : This file is part of eStudy.                                                                                                                                                                                                                                                                                                
       4                 : teams/classes/class.userteammanagement.inc.php                                                                                                                                                                                                                                                                              
       5                 : - Modulgruppe:  Teams                                                                                                                                                                                                                                                                                                       
       6                 : - Beschreibung: Klasse zum Verwalten der Team-Zuordnungen der Teilnehmer.                                                                                                                                                                                                                                                   
       7                 : - Version:      0.3, 19/11/06                                                                                                                                                                                                                                                                                               
       8                 : - Autor(en):    Clemens Weiß <clemens.weiss@mni.fh-giessen.de>                                                                                                                                                                                                                                                             
       9                 : +---------------------------------------------------------------------------+                                                                                                                                                                                                                                               
      10                 : This program is free software; you can redistribute it and/or                                                                                                                                                                                                                                                               
      11                 : modify it under the terms of the GNU General Public License                                                                                                                                                                                                                                                                 
      12                 : as published by the Free Software Foundation; either version 2                                                                                                                                                                                                                                                              
      13                 : of the License, or any later version.                                                                                                                                                                                                                                                                                       
      14                 : +---------------------------------------------------------------------------+                                                                                                                                                                                                                                               
      15                 : This program is distributed in the hope that it will be useful,                                                                                                                                                                                                                                                             
      16                 : but WITHOUT ANY WARRANTY; without even the implied warranty of                                                                                                                                                                                                                                                              
      17                 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                                                                                                                                                                                                                                               
      18                 : GNU General Public License for more details.                                                                                                                                                                                                                                                                                
      19                 : You should have received a copy of the GNU General Public License                                                                                                                                                                                                                                                           
      20                 : along with this program; if not, write to the Free Software                                                                                                                                                                                                                                                                 
      21                 : Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.                                                                                                                                                                                                                                                 
      22                 : +--------------------------------------------------------------------------*/                                                                                                                                                                                                                                               
      23                 : /**                                                                                                                                                                                                                                                                                                                         
      24                 :  * Klasse zum Verwalten der Team-Zuordnungen der Teilnehmer.                                                                                                                                                                                                                                                                
      25                 :  * @package eStudy.Teams                                                                                                                                                                                                                                                                                                    
      26                 :  * @version 0.3, 19/11/06                                                                                                                                                                                                                                                                                                   
      27                 :  * @author Clemens Weiß <clemens.weiss@mni.fh-giessen.de>                                                                                                                                                                                                                                                                  
      28                 :  */                                                                                                                                                                                                                                                                                                                         
      29               1 : require_once ("class.teamlist.inc.php");                                                                                                                                                                                                                                                                                    
      30               1 : require_once ("class.Course.inc.php");                                                                                                                                                                                                                                                                                      
      31               1 : require_once ("class.userrolemanagement.inc.php");                                                                                                                                                                                                                                                                          
      32               1 : class UserTeamManagement {                                                                                                                                                                                                                                                                                                  
      33                 :     /**                                                                                                                                                                                                                                                                                                                     
      34                 :      * ID des Kurses, für den die Team-Zuordnungen verwaltet werden sollen                                                                                                                                                                                                                                                 
      35                 :      * @var int                                                                                                                                                                                                                                                                                                             
      36                 :      * @access private                                                                                                                                                                                                                                                                                                      
      37                 :      */                                                                                                                                                                                                                                                                                                                     
      38                 :     var $courseID;                                                                                                                                                                                                                                                                                                          
      39                 :     /**                                                                                                                                                                                                                                                                                                                     
      40                 :      * Array mit den Vor- und Nachnamen aller Kurs-Mitglieder                                                                                                                                                                                                                                                               
      41                 :      * @var array                                                                                                                                                                                                                                                                                                           
      42                 :      * @access private                                                                                                                                                                                                                                                                                                      
      43                 :      */                                                                                                                                                                                                                                                                                                                     
      44                 :     var $users;                                                                                                                                                                                                                                                                                                             
      45                 :     /**                                                                                                                                                                                                                                                                                                                     
      46                 :      * Konstruktor                                                                                                                                                                                                                                                                                                          
      47                 :      * @access public                                                                                                                                                                                                                                                                                                       
      48                 :      * @param int $courseID ID des Kurses, für den die Team-Zuordnungen verwaltet werden sollen                                                                                                                                                                                                                            
      49                 :      */                                                                                                                                                                                                                                                                                                                     
      50                 :     function UserTeamManagement($courseID) {                                                                                                                                                                                                                                                                                
      51               0 :         $this->courseID = (int)$courseID;                                                                                                                                                                                                                                                                                   
      52               0 :         $this->users = array();                                                                                                                                                                                                                                                                                             
      53               0 :         $users = Course::getParticipants($this->courseID, "all", "user.Nachname, user.Vorname");                                                                                                                                                                                                                            
      54               0 :         if (is_array($users)) {                                                                                                                                                                                                                                                                                             
      55               0 :             foreach($users as $user) {                                                                                                                                                                                                                                                                                      
      56               0 :                 $this->users[(int)$user->userid] = "$user->lastname, $user->firstname";                                                                                                                                                                                                                                     
      57               0 :             }                                                                                                                                                                                                                                                                                                               
      58               0 :         }                                                                                                                                                                                                                                                                                                                   
      59               0 :     }                                                                                                                                                                                                                                                                                                                       
      60                 :     /**                                                                                                                                                                                                                                                                                                                     
      61                 :      * Gibt das Team-Objekt eines Benutzers zurück oder 0, falls der                                                                                                                                                                                                                                                       
      62                 :      * Benutzer zu keinem Team gehört.                                                                                                                                                                                                                                                                                     
      63                 :      *                                                                                                                                                                                                                                                                                                                      
      64                 :      * @access public                                                                                                                                                                                                                                                                                                       
      65                 :      * @param int $userID ID des Benutzers                                                                                                                                                                                                                                                                                  
      66                 :      * @return mixed Team-Objekt des Benutzers oder 0 oder false bei ungültiger User-ID                                                                                                                                                                                                                                    
      67                 :      */                                                                                                                                                                                                                                                                                                                     
      68                 :     function getTeamOfUser($userID) {                                                                                                                                                                                                                                                                                       
      69               0 :         global $db, $settings;                                                                                                                                                                                                                                                                                              
      70               0 :         $dbp = $settings["dbPrefix"];                                                                                                                                                                                                                                                                                       
      71               0 :         if (strval(intval($userID)) != $userID || $userID <= 0) {                                                                                                                                                                                                                                                           
      72               0 :             return false;                                                                                                                                                                                                                                                                                                   
      73                 :         }                                                                                                                                                                                                                                                                                                                   
      74               0 :         $teamID = $db->get_var("SELECT team_id FROM {$dbp}user_team JOIN {$dbp}teams ON id=team_id WHERE user_id='$userID' AND course_id='$this->courseID'");                                                                                                                                                               
      75               0 :         if ($teamID > 0) {                                                                                                                                                                                                                                                                                                  
      76               0 :             return new Team($teamID);                                                                                                                                                                                                                                                                                       
      77                 :         }                                                                                                                                                                                                                                                                                                                   
      78               0 :         return 0;                                                                                                                                                                                                                                                                                                           
      79                 :     }                                                                                                                                                                                                                                                                                                                       
      80                 :     /**                                                                                                                                                                                                                                                                                                                     
      81                 :      * Gibt die User-IDs der Team-Mitglieder in einem Array zurück.                                                                                                                                                                                                                                                        
      82                 :      *                                                                                                                                                                                                                                                                                                                      
      83                 :      * @access public                                                                                                                                                                                                                                                                                                       
      84                 :      * @param int $teamID ID des Teams                                                                                                                                                                                                                                                                                      
      85                 :      * @return mixed Array mit Integer-IDs oder false bei ungültiger Team-ID                                                                                                                                                                                                                                               
      86                 :      */                                                                                                                                                                                                                                                                                                                     
      87                 :     function getUsersOfTeam($teamID) {                                                                                                                                                                                                                                                                                      
      88               0 :         global $db, $settings;                                                                                                                                                                                                                                                                                              
      89               0 :         $dbp = $settings["dbPrefix"];                                                                                                                                                                                                                                                                                       
      90               0 :         if (strval(intval($teamID)) != $teamID || $teamID <= 0) {                                                                                                                                                                                                                                                           
      91               0 :             return false;                                                                                                                                                                                                                                                                                                   
      92                 :         }                                                                                                                                                                                                                                                                                                                   
      93               0 :         $userIDs = $db->get_col("SELECT user_id FROM {$dbp}user_team JOIN {$dbp}user ON user_id=ID WHERE team_id='$teamID' ORDER BY Nachname, Vorname");                                                                                                                                                                    
      94               0 :         if (is_array($userIDs)) {                                                                                                                                                                                                                                                                                           
      95               0 :             $userIDs = array_map("intval", $userIDs);                                                                                                                                                                                                                                                                       
      96               0 :             return $userIDs;                                                                                                                                                                                                                                                                                                
      97                 :         }                                                                                                                                                                                                                                                                                                                   
      98               0 :         return array();                                                                                                                                                                                                                                                                                                     
      99                 :     }                                                                                                                                                                                                                                                                                                                       
     100                 :     /**                                                                                                                                                                                                                                                                                                                     
     101                 :      * Listet alle Teams dieses Kurses inkl. der Mitglieder und freien Plätze auf.                                                                                                                                                                                                                                         
     102                 :      *                                                                                                                                                                                                                                                                                                                      
     103                 :      * @access public                                                                                                                                                                                                                                                                                                       
     104                 :      * @return void                                                                                                                                                                                                                                                                                                         
     105                 :      */                                                                                                                                                                                                                                                                                                                     
     106                 :     function listTeams() {                                                                                                                                                                                                                                                                                                  
     107               0 :         global $db, $settings;                                                                                                                                                                                                                                                                                              
     108               0 :         $dbp = $settings["dbPrefix"];                                                                                                                                                                                                                                                                                       
     109               0 :         $urm = new UserRoleManagement($this->courseID);                                                                                                                                                                                                                                                                     
     110               0 :         echo "<ul class='teamsOverview'>\n";                                                                                                                                                                                                                                                                                
     111               0 :         foreach(TeamList::getTeams($this->courseID) as $team) {                                                                                                                                                                                                                                                             
     112               0 :             $userIDs = $this->getUsersOfTeam($team->getID());                                                                                                                                                                                                                                                               
     113               0 :             $available = $team->getMaxMembers() -count($userIDs);                                                                                                                                                                                                                                                           
     114               0 :             echo "<li>".Data::toHTML($team->getName(), false);                                                                                                                                                                                                                                                              
     115               0 :             if ($available == 1) {                                                                                                                                                                                                                                                                                          
     116               0 :                 echo " (noch <strong>1</strong> freier Platz)";                                                                                                                                                                                                                                                             
     117               0 :             } elseif ($available > 0) {                                                                                                                                                                                                                                                                                     
     118               0 :                 echo " (noch <strong>$available</strong> freie Pl&auml;tze)";                                                                                                                                                                                                                                               
     119               0 :             } elseif ($team->getMaxMembers() == 0) {                                                                                                                                                                                                                                                                        
     120               0 :                 echo " (noch <strong>beliebig viele</strong> freie Pl&auml;tze)";                                                                                                                                                                                                                                           
     121               0 :             } else {                                                                                                                                                                                                                                                                                                        
     122               0 :                 echo " (alle Pl&auml;tze belegt)";                                                                                                                                                                                                                                                                          
     123                 :             }                                                                                                                                                                                                                                                                                                               
     124               0 :             $teamID = (int)$team->getID();                                                                                                                                                                                                                                                                                  
     125               0 :             $crp = (int)$db->get_var("SELECT SUM(CrP) FROM user_team WHERE team_id='$teamID'");                                                                                                                                                                                                                             
     126               0 :             if ($crp > 0) {                                                                                                                                                                                                                                                                                                 
     127               0 :                 echo " <strong>$crp CrP </strong>" .                                                                                                                                                                                                                                                                        
     128               0 :                     "(entsprechen ", $crp * 30, " Arbeitsstunden)";                                                                                                                                                                                                                                                         
     129               0 :             }                                                                                                                                                                                                                                                                                                               
     130               0 :             if (count($userIDs)) {                                                                                                                                                                                                                                                                                          
     131               0 :                 echo "<ul>";                                                                                                                                                                                                                                                                                                
     132               0 :                 foreach($userIDs as $userID) {                                                                                                                                                                                                                                                                              
     133               0 :                     $userCrp = (int)$db->get_var("SELECT CrP FROM {$dbp}user_team WHERE (user_id='$userID') AND (team_id='$teamID')");                                                                                                                                                                                      
     134               0 :                     echo "<li>";                                                                                                                                                                                                                                                                                            
     135               0 :                     if ($userCrp > 0) echo "$userCrp CrP ";                                                                                                                                                                                                                                                                 
     136               0 :                     echo "<a href='".PATH_TO_ROOT."user/homepage.php?user=$userID'>".Data::toHTML($this->users[$userID], false) ."</a>";                                                                                                                                                                                    
     137               0 :                     if ($roles = $urm->getRolesOfUser((int)$userID, true)) {                                                                                                                                                                                                                                                
     138               0 :                         $gender = $db->get_var("SELECT gender FROM {$dbp}user WHERE ID='$userID'");                                                                                                                                                                                                                         
     139               0 :                         $role = array_pop($roles);                                                                                                                                                                                                                                                                          
     140               0 :                         echo " (".$role["role"]->getPropertiesLink($role["role"]->getName($gender)) .")";                                                                                                                                                                                                                   
     141               0 :                     }                                                                                                                                                                                                                                                                                                       
     142                 :                     // Teamtermine eintragen                                                                                                                                                                                                                                                                                
     143               0 :                     $sql = "SELECT editCalendar FROM user_team WHERE user_id = ".Data::toMysql($userID) ." "."and team_id = ".Data::toMysql($team->getID());                                                                                                                                                                
     144               0 :                     $resultList = $db->get_results($sql, ARRAY_A);                                                                                                                                                                                                                                                          
     145               0 :                     if ($resultList != null) {                                                                                                                                                                                                                                                                              
     146               0 :                         $sql = "SELECT user_id FROM user_team WHERE user_id = ".Data::toMysql($_SESSION['userid']) ." "."and team_id = ".Data::toMysql($team->getID());                                                                                                                                                     
     147               0 :                         $userList = $db->get_results($sql, ARRAY_A);                                                                                                                                                                                                                                                        
     148               0 :                         if ($userList != null || $_SESSION['usergroup'] == DOZENT || $_SESSION['usergroup'] == ADMIN) {                                                                                                                                                                                                     
     149               0 :                             if ($resultList[0]['editCalendar'] == "1") {                                                                                                                                                                                                                                                    
     150               0 :                                 echo " (<a href=\"javascript:editNot(".$userID.",".$team->getID() .");\" title=\"Teamtermine nicht mehr editieren d&uuml;rfen\">darf Teamtermine eintragen</a>)";                                                                                                                           
     151               0 :                             } else {                                                                                                                                                                                                                                                                                        
     152               0 :                                 echo " (<a href=\"javascript:editDo(".$userID.",".$team->getID() .");\" title=\"Teamtermine editieren d&uuml;rfen\">darf keine Teamtermine eintragen</a>)";                                                                                                                                 
     153                 :                             }                                                                                                                                                                                                                                                                                               
     154               0 :                         } else if ($userList == null && ($_SESSION['usergroup'] == DOZENT || $_SESSION['usergroup'] == ADMIN)) {                                                                                                                                                                                            
     155               0 :                             if ($resultList[0]['editCalendar'] == "1") {                                                                                                                                                                                                                                                    
     156               0 :                                 echo " (darf Teamtermine eintragen)";                                                                                                                                                                                                                                                       
     157               0 :                             } else {                                                                                                                                                                                                                                                                                        
     158               0 :                                 echo " (darf keine Teamtermine eintragen)";                                                                                                                                                                                                                                                 
     159                 :                             }                                                                                                                                                                                                                                                                                               
     160               0 :                         }                                                                                                                                                                                                                                                                                                   
     161               0 :                     }                                                                                                                                                                                                                                                                                                       
     162               0 :                     echo "</li>\n";                                                                                                                                                                                                                                                                                         
     163               0 :                 }                                                                                                                                                                                                                                                                                                           
     164               0 :                 echo "</ul>\n";                                                                                                                                                                                                                                                                                             
     165               0 :             }                                                                                                                                                                                                                                                                                                               
     166               0 :             echo "</li>\n";                                                                                                                                                                                                                                                                                                 
     167               0 :         }                                                                                                                                                                                                                                                                                                                   
     168               0 :         echo "</ul>";                                                                                                                                                                                                                                                                                                       
     169               0 :     }                                                                                                                                                                                                                                                                                                                       
     170                 :     /**                                                                                                                                                                                                                                                                                                                     
     171                 :      * Zeigt das Formular an, mit dem sich der Benutzer selbst einem Team zuordnen kann oder                                                                                                                                                                                                                                
     172                 :      * einen Hinweis, falls es keine Teams mit freien Plätzen mehr gibt.                                                                                                                                                                                                                                                   
     173                 :      *                                                                                                                                                                                                                                                                                                                      
     174                 :      * @access public                                                                                                                                                                                                                                                                                                       
     175                 :      * @return void                                                                                                                                                                                                                                                                                                         
     176                 :      */                                                                                                                                                                                                                                                                                                                     
     177                 :     function showUserTeamForm() {                                                                                                                                                                                                                                                                                           
     178               0 :         $teams = TeamList::getTeams($this->courseID);                                                                                                                                                                                                                                                                       
     179               0 :         if (count($teams)) {                                                                                                                                                                                                                                                                                                
     180               0 :             echo "<form action='".PATH_TO_ROOT.SCRIPT_NAME."' method='post'>"."<ul class='teamsOverview'>\n";                                                                                                                                                                                                               
     181               0 :             $closingDate = TeamList::getTeamClosingDate($this->courseID);                                                                                                                                                                                                                                                   
     182               0 :             $time = time();                                                                                                                                                                                                                                                                                                 
     183               0 :             if ($closingDate > $time) {                                                                                                                                                                                                                                                                                     
     184               0 :                 echo "<li><input type='radio' name='team' id='team0' value='0' ".(!isset($_SESSION["teamID"]) ? "checked='checked' " : "") ."/> "."<label for='team0'><em>Kein Team</em></label>";                                                                                                                          
     185               0 :             }                                                                                                                                                                                                                                                                                                               
     186               0 :             $count = 0;                                                                                                                                                                                                                                                                                                     
     187               0 :             foreach($teams as $team) {                                                                                                                                                                                                                                                                                      
     188               0 :                 $userIDs = $this->getUsersOfTeam($team->getID());                                                                                                                                                                                                                                                           
     189               0 :                 $available = $team->getMaxMembers() -count($userIDs);                                                                                                                                                                                                                                                       
     190               0 :                 if ($available > 0 || $team->getMaxMembers() == 0 || (in_array($_SESSION["userid"], $userIDs) && $closingDate > $time)) {                                                                                                                                                                                   
     191               0 :                     echo "<li><input type='radio' name='team' id='team".$team->getID() ."' value='".$team->getID() ."' ".(isset($_SESSION["teamID"]) && $_SESSION["teamID"] == $team->getID() ? "checked='checked' " : "") ."/> "."<label for='team".$team->getID() ."'>".Data::toHTML($team->getName(), false) ."</label>";
     192               0 :                     $count++;                                                                                                                                                                                                                                                                                               
     193               0 :                     if (count($userIDs)) {                                                                                                                                                                                                                                                                                  
     194               0 :                         echo "<ul>";                                                                                                                                                                                                                                                                                        
     195               0 :                         foreach($userIDs as $userID) {                                                                                                                                                                                                                                                                      
     196               0 :                             echo "<li><a href='".PATH_TO_ROOT."user/homepage.php?user=$userID'>".Data::toHTML($this->users[$userID], false) ."</a></li>\n";                                                                                                                                                                 
     197               0 :                         }                                                                                                                                                                                                                                                                                                   
     198               0 :                         echo "</ul>\n";                                                                                                                                                                                                                                                                                     
     199               0 :                     }                                                                                                                                                                                                                                                                                                       
     200               0 :                     echo "</li>\n";                                                                                                                                                                                                                                                                                         
     201               0 :                 }                                                                                                                                                                                                                                                                                                           
     202               0 :             }                                                                                                                                                                                                                                                                                                               
     203               0 :             echo "</ul>\n";                                                                                                                                                                                                                                                                                                 
     204               0 :             if ($count) {                                                                                                                                                                                                                                                                                                   
     205               0 :                 echo "<p class='pForm'><input type='submit' name='okButton' value='Speichern' /></p>";                                                                                                                                                                                                                      
     206               0 :             } else {                                                                                                                                                                                                                                                                                                        
     207               0 :                 echo "<p>Leider sind keine Pl&auml;tze in Teams mehr frei.</p>";                                                                                                                                                                                                                                            
     208                 :             }                                                                                                                                                                                                                                                                                                               
     209               0 :             echo "</form>";                                                                                                                                                                                                                                                                                                 
     210               0 :         } else {                                                                                                                                                                                                                                                                                                            
     211               0 :             echo "<p>Es wurden noch keine Teams angelegt.</p>";                                                                                                                                                                                                                                                             
     212                 :         }                                                                                                                                                                                                                                                                                                                   
     213               0 :     }                                                                                                                                                                                                                                                                                                                       
     214                 :     /**                                                                                                                                                                                                                                                                                                                     
     215                 :      * Speichert eine Team-Zuordnung mit allen notwendigen Überprüfungen.                                                                                                                                                                                                                                                 
     216                 :      * Wird 0 als Team-ID übergeben, wird die Team-Zugehörigkeit des Benutzers gelöscht.                                                                                                                                                                                                                                 
     217                 :      *                                                                                                                                                                                                                                                                                                                      
     218                 :      * @access public                                                                                                                                                                                                                                                                                                       
     219                 :      * @param int $userID ID des Benutzers                                                                                                                                                                                                                                                                                  
     220                 :      * @param int $teamID ID des Teams oder 0                                                                                                                                                                                                                                                                               
     221                 :      * @return mixed true bei Erfolg oder String mit Fehlermeldung                                                                                                                                                                                                                                                          
     222                 :      */                                                                                                                                                                                                                                                                                                                     
     223                 :     function setTeamForUser($userID, $teamID) {                                                                                                                                                                                                                                                                             
     224               0 :         global $db, $settings, $EZSQL_ERROR;                                                                                                                                                                                                                                                                                
     225               0 :         $dbp = $settings["dbPrefix"];                                                                                                                                                                                                                                                                                       
     226               0 :         if (strval(intval($userID)) != $userID || !in_array($userID, array_keys($this->users))) {                                                                                                                                                                                                                           
     227               0 :             return "Ungültige User-ID";                                                                                                                                                                                                                                                                                    
     228                 :         }                                                                                                                                                                                                                                                                                                                   
     229               0 :         $teams = TeamList::getTeams($this->courseID);                                                                                                                                                                                                                                                                       
     230               0 :         if ($teamID > 0) {                                                                                                                                                                                                                                                                                                  
     231               0 :             if (strval(intval($teamID)) != $teamID || !in_array($teamID, array_keys($teams))) {                                                                                                                                                                                                                             
     232               0 :                 return "Ungültige Team-ID";                                                                                                                                                                                                                                                                                
     233                 :             }                                                                                                                                                                                                                                                                                                               
     234               0 :             if (TeamList::getTeamClosingDate($this->courseID) < time() && $this->getTeamOfUser($userID) !== 0) {                                                                                                                                                                                                            
     235               0 :                 return "Sie sind bereits Mitglied in einem Team.";                                                                                                                                                                                                                                                          
     236                 :             }                                                                                                                                                                                                                                                                                                               
     237               0 :             $team = new Team($teamID);                                                                                                                                                                                                                                                                                      
     238               0 :             if ($team->getMaxMembers() != 0 && count($this->getUsersOfTeam($teamID)) >= $team->getMaxMembers()) {                                                                                                                                                                                                           
     239               0 :                 return "In dem Team ist leider kein Platz mehr.";                                                                                                                                                                                                                                                           
     240                 :             }                                                                                                                                                                                                                                                                                                               
     241               0 :         }                                                                                                                                                                                                                                                                                                                   
     242               0 :         $errorCount = count($EZSQL_ERROR);                                                                                                                                                                                                                                                                                  
     243               0 :         $db->query("DELETE FROM {$dbp}user_team WHERE user_id='$userID' AND team_id IN (".implode(", ", array_keys($teams)) .")");                                                                                                                                                                                          
     244               0 :         if ($teamID > 0) {                                                                                                                                                                                                                                                                                                  
     245               0 :             $db->query("INSERT INTO {$dbp}user_team (user_id, team_id) VALUES ('$userID', '$teamID')");                                                                                                                                                                                                                     
     246               0 :         }                                                                                                                                                                                                                                                                                                                   
     247               0 :         if (count($EZSQL_ERROR) > $errorCount) {                                                                                                                                                                                                                                                                            
     248               0 :             return "Datenbank-Fehler";                                                                                                                                                                                                                                                                                      
     249                 :         }                                                                                                                                                                                                                                                                                                                   
     250               0 :         return true;                                                                                                                                                                                                                                                                                                        
     251                 :     }                                                                                                                                                                                                                                                                                                                       
     252                 :     /**                                                                                                                                                                                                                                                                                                                     
     253                 :      * Gibt für jedes Team in diesem Kurs eine select-Box aus, in der                                                                                                                                                                                                                                                      
     254                 :      * aus allen Kurs-Mitgliedern ausgewählt werden kann, wer dem Team zugeordnet ist.                                                                                                                                                                                                                                     
     255                 :      *                                                                                                                                                                                                                                                                                                                      
     256                 :      * @access public                                                                                                                                                                                                                                                                                                       
     257                 :      * @return void                                                                                                                                                                                                                                                                                                         
     258                 :      */                                                                                                                                                                                                                                                                                                                     
     259                 :     function showTeamAssignmentForms() {                                                                                                                                                                                                                                                                                    
     260               0 :         $size = count($this->users);                                                                                                                                                                                                                                                                                        
     261               0 :         if ($size > 8) $size = 8;                                                                                                                                                                                                                                                                                           
     262               0 :         foreach(TeamList::getTeams($this->courseID) as $team) {                                                                                                                                                                                                                                                             
     263               0 :             $userIDs = $this->getUsersOfTeam($team->getID());                                                                                                                                                                                                                                                               
     264               0 :             echo "<form action='".PATH_TO_ROOT.SCRIPT_NAME."' method='post' class='teamAssignmentForm'><p>\n"."<input type='hidden' name='teamID' value='".$team->getID() ."' />\n"."<strong>".Data::toHTML($team->getName(), false) ."</strong><br />\n"."<select name='users[]' size='$size' multiple='multiple'>\n";     
     265               0 :             foreach($this->users as $userID => $userName) {                                                                                                                                                                                                                                                                 
     266               0 :                 echo "<option value='$userID'".(in_array($userID, $userIDs) ? " selected='selected'" : "") .">".Data::toHTML($userName, false) ."</option>\n";                                                                                                                                                              
     267               0 :             }                                                                                                                                                                                                                                                                                                               
     268               0 :             echo "</select><br />"."<input type='submit' name='okButton' value='Speichern' /> "."<input type='reset' value='Auswahl zur&uuml;cksetzen' />"."</p></form>\n";                                                                                                                                                 
     269               0 :         }                                                                                                                                                                                                                                                                                                                   
     270               0 :     }                                                                                                                                                                                                                                                                                                                       
     271                 :     /**                                                                                                                                                                                                                                                                                                                     
     272                 :      * Ordnet alle im Array angegebenen Benutzer-IDs dem angegebenen Team zu.                                                                                                                                                                                                                                               
     273                 :      * Bestehende Zuordnungen von Benutzern, die nicht im Array enthalten sind,                                                                                                                                                                                                                                             
     274                 :      * werden gelöscht.                                                                                                                                                                                                                                                                                                    
     275                 :      *                                                                                                                                                                                                                                                                                                                      
     276                 :      * @access public                                                                                                                                                                                                                                                                                                       
     277                 :      * @param int $teamID ID des Teams, zu dem die Benutzer zugeordnet werden sollen                                                                                                                                                                                                                                        
     278                 :      * @param array $users Array von Benutzer-IDs, die dem Team zugeordnet werden sollen                                                                                                                                                                                                                                    
     279                 :      * @return mixed true bei Erfolg, sonst String mit Fehlermeldung                                                                                                                                                                                                                                                        
     280                 :      */                                                                                                                                                                                                                                                                                                                     
     281                 :     function assignUsersToTeam($teamID, $users) {                                                                                                                                                                                                                                                                           
     282               0 :         global $db, $settings, $EZSQL_ERROR;                                                                                                                                                                                                                                                                                
     283               0 :         $dbp = $settings["dbPrefix"];                                                                                                                                                                                                                                                                                       
     284               0 :         if (strval(intval($teamID)) != $teamID || $teamID <= 0 || !is_array($users)) {                                                                                                                                                                                                                                      
     285               0 :             return "Ungültige Übergabe-Werte";                                                                                                                                                                                                                                                                            
     286                 :         }                                                                                                                                                                                                                                                                                                                   
     287               0 :         $users = array_map("intval", $users);                                                                                                                                                                                                                                                                               
     288               0 :         if (count(array_diff($users, array_keys($this->users)))) {                                                                                                                                                                                                                                                          
     289               0 :             return "Einer der Benutzer ist nicht Mitglied dieses Kurses.";                                                                                                                                                                                                                                                  
     290                 :         }                                                                                                                                                                                                                                                                                                                   
     291               0 :         $oldUsers = $this->getUsersOfTeam($teamID);                                                                                                                                                                                                                                                                         
     292               0 :         $insert = array_diff($users, $oldUsers);                                                                                                                                                                                                                                                                            
     293               0 :         $delete = array_diff($oldUsers, $users);                                                                                                                                                                                                                                                                            
     294               0 :         $team = new Team($teamID);                                                                                                                                                                                                                                                                                          
     295               0 :         if ($team->getMaxMembers() > 0 && (count($oldUsers) +count($insert) -count($delete)) > $team->getMaxMembers()) {                                                                                                                                                                                                    
     296               0 :             return "Die maximale Teilnehmerzahl dieses Teams beträgt ".$team->getMaxMembers();                                                                                                                                                                                                                             
     297                 :         }                                                                                                                                                                                                                                                                                                                   
     298               0 :         foreach($insert as $userID) {                                                                                                                                                                                                                                                                                       
     299               0 :             if ($this->getTeamOfUser($userID) !== 0) {                                                                                                                                                                                                                                                                      
     300               0 :                 return "Der Benutzer ".$this->users[$userID]." ist bereits Mitglied in einem Team.";                                                                                                                                                                                                                        
     301                 :             }                                                                                                                                                                                                                                                                                                               
     302               0 :         }                                                                                                                                                                                                                                                                                                                   
     303               0 :         $errorCount = count($EZSQL_ERROR);                                                                                                                                                                                                                                                                                  
     304               0 :         if (count($insert)) {                                                                                                                                                                                                                                                                                               
     305               0 :             $db->query("INSERT INTO {$dbp}user_team (user_id, team_id) VALUES ('".implode("', '$teamID'), ('", $insert) ."', '$teamID')");                                                                                                                                                                                  
     306               0 :         }                                                                                                                                                                                                                                                                                                                   
     307               0 :         if (count($delete)) {                                                                                                                                                                                                                                                                                               
     308               0 :             $db->query("DELETE FROM {$dbp}user_team WHERE user_id IN (".implode(", ", $delete) .") AND team_id='$teamID'");                                                                                                                                                                                                 
     309               0 :         }                                                                                                                                                                                                                                                                                                                   
     310               0 :         if (count($EZSQL_ERROR) > $errorCount) {                                                                                                                                                                                                                                                                            
     311               0 :             return "Datenbank-Fehler";                                                                                                                                                                                                                                                                                      
     312                 :         }                                                                                                                                                                                                                                                                                                                   
     313               0 :         return true;                                                                                                                                                                                                                                                                                                        
     314                 :     }                                                                                                                                                                                                                                                                                                                       
     315                 :     /**                                                                                                                                                                                                                                                                                                                     
     316                 :      * Gibt die IDs der Benutzer dieses Kurses zurück, die sich in ein Team einwählen können.                                                                                                                                                                                                                            
     317                 :      * Das kann z.B. für die Prüfung von Zugriffsrechten verwendet werden.                                                                                                                                                                                                                                                
     318                 :      *                                                                                                                                                                                                                                                                                                                      
     319                 :      * @access public                                                                                                                                                                                                                                                                                                       
     320                 :      * @return array Array mit User-IDs                                                                                                                                                                                                                                                                                     
     321                 :      */                                                                                                                                                                                                                                                                                                                     
     322                 :     function getUserIDs() {                                                                                                                                                                                                                                                                                                 
     323               0 :         return array_keys($this->users);                                                                                                                                                                                                                                                                                    
     324                 :     }                                                                                                                                                                                                                                                                                                                       
     325                 : }                                                                                                                                                                                                                                                                                                                           

Generated by PHPUnit 3.2.21 and Xdebug 2.0.4 at Sat Nov 7 22:04:08 CET 2009.